﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace V82.ОбщиеМодули
{
	public partial class УвольнениеИзОрганизацийДополнительный
	{
		////////////////////////////////////////////////////////////////////////////////
		// Вспомогательные процедуры, функции
		// Заполняет табличную часть документа "РаботникиОрганизации" списком уволенных в компании за период
		//

		public object СформироватьЗапросРаботникиОрганизацииУволенные(/*ДатаНачалаПериода, ДатаОкончанияПериода, ДокументОбъект*/)
		{
			//Запрос = Новый Запрос;
			//Запрос.УстановитьПараметр("ГоловнаяОрганизация",		ОбщегоНазначения.ГоловнаяОрганизация(ДокументОбъект.Организация));
			//Запрос.УстановитьПараметр("Организация",				ДокументОбъект.Организация);
			//Запрос.УстановитьПараметр("ДатаНачалаПериода",			ДатаНачалаПериода);
			//Запрос.УстановитьПараметр("ДатаОкончанияПериода",		ДатаОкончанияПериода);
			//Запрос.УстановитьПараметр("Дата",						ДокументОбъект.Дата);
			/*Запрос.Текст =
	"ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
	|	Работники.ФизЛицо КАК ФизЛицо,
	|	ДОБАВИТЬКДАТЕ(Работники.Период, ДЕНЬ, -1) КАК ДатаУвольнения
	|ПОМЕСТИТЬ ВТ_Физлица
	|ИЗ
	|	РегистрСведений.Работники КАК Работники
	|ГДЕ
	|	Работники.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
	|	И Работники.Период МЕЖДУ &ДатаНачалаПериода И &ДатаОкончанияПериода
	|
	|ИНДЕКСИРОВАТЬ ПО
	|	ФизЛицо
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	СотрудникиОрганизаций.Ссылка КАК Сотрудник,
	|	Физлица.ДатаУвольнения КАК ДатаУвольнения,
	|	Физлица.ФизЛицо,
	|	СотрудникиОрганизаций.ВидЗанятости
	|ПОМЕСТИТЬ ВТ_Сотрудники
	|ИЗ
	|	ВТ_Физлица КАК Физлица
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
	|		ПО Физлица.ФизЛицо = СотрудникиОрганизаций.Физлицо
	|			И (СотрудникиОрганизаций.Организация = &ГоловнаяОрганизация)
	|
	|ИНДЕКСИРОВАТЬ ПО
	|	Сотрудник
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	РаботникиОрганизацииСрезПоследних.Сотрудник,
	|	РаботникиОрганизацииСрезПоследних.Сотрудник.Физлицо КАК Физлицо,
	|	МИНИМУМ(Сотрудники.ДатаУвольнения) КАК ДатаУвольнения,
	|	ВЫБОР
	|		КОГДА (НЕ НДФЛПрименениеВычетовСрезПоследних.Физлицо ЕСТЬ NULL )
	|			ТОГДА ИСТИНА
	|		ИНАЧЕ ЛОЖЬ
	|	КОНЕЦ КАК ПрекращатьСтандартныеВычеты
	|ИЗ
	|	РегистрСведений.РаботникиОрганизаций.СрезПоследних(
	|			&Дата,
	|			Организация = &ГоловнаяОрганизация
	|				И Сотрудник В
	|					(ВЫБРАТЬ РАЗЛИЧНЫЕ
	|						Сотрудники.Сотрудник
	|					ИЗ
	|						ВТ_Сотрудники КАК Сотрудники)) КАК РаботникиОрганизацииСрезПоследних
	|		ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Сотрудники КАК Сотрудники
	|			ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НДФЛПрименениеВычетов.СрезПоследних(
	|					&Дата,
	|					Физлицо В
	|						(ВЫБРАТЬ РАЗЛИЧНЫЕ
	|							Физлица.ФизЛицо
	|						ИЗ
	|							ВТ_Сотрудники КАК Физлица
	|						ГДЕ
	|							Физлица.ВидЗанятости <> ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ВнутреннееСовместительство))) КАК НДФЛПрименениеВычетовСрезПоследних
	|			ПО Сотрудники.ФизЛицо = НДФЛПрименениеВычетовСрезПоследних.Физлицо
	|				И (НДФЛПрименениеВычетовСрезПоследних.Организация = &ГоловнаяОрганизация)
	|		ПО РаботникиОрганизацииСрезПоследних.Сотрудник = Сотрудники.Сотрудник
	|ГДЕ
	|	ВЫБОР
	|			КОГДА РаботникиОрганизацииСрезПоследних.ПериодЗавершения <= &Дата
	|					И РаботникиОрганизацииСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
	|				ТОГДА РаботникиОрганизацииСрезПоследних.ПодразделениеОрганизацииЗавершения.Владелец
	|			ИНАЧЕ РаботникиОрганизацииСрезПоследних.ПодразделениеОрганизации.Владелец
	|		КОНЕЦ = &Организация
	|	И ВЫБОР
	|			КОГДА РаботникиОрганизацииСрезПоследних.ПериодЗавершения <= &Дата
	|					И РаботникиОрганизацииСрезПоследних.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
	|				ТОГДА РаботникиОрганизацииСрезПоследних.ПричинаИзмененияСостоянияЗавершения
	|			ИНАЧЕ РаботникиОрганизацииСрезПоследних.ПричинаИзмененияСостояния
	|		КОНЕЦ <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
	|
	|СГРУППИРОВАТЬ ПО
	|	РаботникиОрганизацииСрезПоследних.Сотрудник,
	|	РаботникиОрганизацииСрезПоследних.Сотрудник.Физлицо,
	|	ВЫБОР
	|		КОГДА (НЕ НДФЛПрименениеВычетовСрезПоследних.Физлицо ЕСТЬ NULL )
	|			ТОГДА ИСТИНА
	|		ИНАЧЕ ЛОЖЬ
	|	КОНЕЦ
	|
	|УПОРЯДОЧИТЬ ПО
	|	РаботникиОрганизацииСрезПоследних.Сотрудник.Наименование";*/
			return null;
		}
		// ЗаполнитьТабличнуюЧастьРаботникиОрганизацииУволенные()
		////////////////////////////////////////////////////////////////////////////////
		// Процедуры, функции объекта

		public void ДополнитьСтруктуруПечатныхФорм(/*СтруктураПечатныхФорм, ДокументОбъект*/)
		{
			/*// В этой конфигурации структура печатных форм не дополняется
*/
		}

		public object ПечатьДополнительныхФорм(/*ИмяМакета, Объект*/)
		{
			return null;
		}

		public object СформироватьЗапросОбработкаЗаполненияПоДокументамУвольнение(/*ДокументОбъект, Основание*/)
		{
			//Запрос = Новый Запрос;
			//Запрос.УстановитьПараметр("ГоловнаяОрганизация",		ОбщегоНазначения.ГоловнаяОрганизация(ДокументОбъект.Организация));
			//Запрос.УстановитьПараметр("Организация",				ДокументОбъект.Организация);
			//Запрос.УстановитьПараметр("Регистратор",				Основание);
			//Запрос.УстановитьПараметр("Дата",						ДокументОбъект.Дата);
			/*Запрос.Текст =
	"ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	РаботникиОрганизацииСрезПоследних.Сотрудник,
	|	РаботникиОрганизацииСрезПоследних.Сотрудник.Физлицо КАК Физлицо,
	|	МИНИМУМ(УвольнениеРаботники.ДатаУвольнения) КАК ДатаУвольнения,
	|	ВЫБОР
	|		КОГДА (НЕ НДФЛПрименениеВычетовСрезПоследних.Физлицо ЕСТЬ NULL )
	|			ТОГДА ИСТИНА
	|		ИНАЧЕ ЛОЖЬ
	|	КОНЕЦ КАК ПрекращатьСтандартныеВычеты
	|ИЗ
	|	РегистрСведений.РаботникиОрганизаций.СрезПоследних(
	|			&Дата,
	|			Организация = &ГоловнаяОрганизация
	|				И Сотрудник.Физлицо В
	|					(ВЫБРАТЬ РАЗЛИЧНЫЕ
	|						УвольнениеРаботники.Сотрудник.Физлицо
	|					ИЗ
	|						Документ.Увольнение.Работники КАК УвольнениеРаботники
	|					ГДЕ
	|						УвольнениеРаботники.Ссылка = &Регистратор)) КАК РаботникиОрганизацииСрезПоследних
	|		ЛЕВОЕ СОЕДИНЕНИЕ Документ.Увольнение.Работники КАК УвольнениеРаботники
	|		ПО (РаботникиОрганизацииСрезПоследних.ПодразделениеОрганизации.Владелец = &Организация)
	|			И РаботникиОрганизацииСрезПоследних.Сотрудник.Физлицо = УвольнениеРаботники.Сотрудник.Физлицо
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НДФЛПрименениеВычетов.СрезПоследних(
	|				&Дата,
	|				Физлицо В
	|					(ВЫБРАТЬ РАЗЛИЧНЫЕ
	|						УвольнениеРаботники.Сотрудник.Физлицо
	|					ИЗ
	|						Документ.Увольнение.Работники КАК УвольнениеРаботники
	|					ГДЕ
	|						УвольнениеРаботники.Ссылка = &Регистратор)) КАК НДФЛПрименениеВычетовСрезПоследних
	|		ПО РаботникиОрганизацииСрезПоследних.Сотрудник.Физлицо = НДФЛПрименениеВычетовСрезПоследних.Физлицо
	|			И (НДФЛПрименениеВычетовСрезПоследних.Организация = &ГоловнаяОрганизация)
	|			И (РаботникиОрганизацииСрезПоследних.Сотрудник.ВидЗанятости <> ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ВнутреннееСовместительство))
	|ГДЕ
	|	РаботникиОрганизацииСрезПоследних.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
	|
	|СГРУППИРОВАТЬ ПО
	|	РаботникиОрганизацииСрезПоследних.Сотрудник,
	|	РаботникиОрганизацииСрезПоследних.Сотрудник.Физлицо,
	|	ВЫБОР
	|		КОГДА (НЕ НДФЛПрименениеВычетовСрезПоследних.Физлицо ЕСТЬ NULL )
	|			ТОГДА ИСТИНА
	|		ИНАЧЕ ЛОЖЬ
	|	КОНЕЦ
	|
	|УПОРЯДОЧИТЬ ПО
	|	РаботникиОрганизацииСрезПоследних.Сотрудник.Наименование";*/
			return null;
		}

		public void ДобавитьДополнительныеДвижения(/*ДокументОбъект, Отказ, Заголовок*/)
		{
			/*// В этой конфигурации дополнительных действий не предусмотрено
*/
		}
		////////////////////////////////////////////////////////////////////////////////
		// Процедуры, функции для работы формы документа
		// Процедура - вызывается при нажатии на кнопку "ЗаполнитьУволенными"
		//

		public void ЗаполнитьТабличнуюЧастьРаботникиОрганизацииУволенные(/*ДокументОбъект, ФормаДокумента = Неопределено, ДатаНачалаПериода = Неопределено, ДатаОкончанияПериода = Неопределено*/)
		{
			if(true/*ФормаДокумента = Неопределено И ДатаНачалаПериода = Неопределено И ДатаОкончанияПериода = Неопределено*/)
			{
			}
			//РаботникиОрганизации = ДокументОбъект.РаботникиОрганизации;
			if(true/*РаботникиОрганизации.Количество()>0*/)
			{
				//ТекстВопроса = "Имеющийся список сотрудников будет очищен. Продолжить?";
				//Ответ  = РаботаСДиалогами.ЗадатьВопрос(ТекстВопроса, РежимДиалогаВопрос.ОКОтмена);
				if(true/*Ответ = КодВозвратаДиалога.Отмена*/)
				{
				}
			}
			if(true/*ФормаДокумента = Неопределено*/)
			{
				//РаботникиОрганизации.Загрузить(СформироватьЗапросРаботникиОрганизацииУволенные(ДатаНачалаПериода, ДатаОкончанияПериода, ДокументОбъект).Выгрузить());
			}
		}
		// КоманднаяПанельРаботникиОрганизацииЗаполнитьУволенными()

		public void ФормаДокументаПередОткрытиемДополнительно(/*Форма*/)
		{
			/*// В этой конфигурации дополнительных действий не предусмотрено
*/
		}
	}
}
